package com.example.demo.algorithm.unique_id;

public class SqlCreate {
    /**
     * 由于分布式数据库的起始自增值一样所以才会有冲突的情况发生，那么我们将分布式系统中数据库的同一个业务表的自增ID设计成不一样的起始值，
     * 然后设置固定的步长，步长的值即为分库的数量或分表的数量。
     * 以MySQL举例，利用给字段设置auto_increment_increment和auto_increment_offset来保证ID自增。
     * auto_increment_offset：表示自增长字段从那个数开始，他的取值范围是1 .. 65535。auto_increment_increment：表示自增长字段每次递增的量，
     * 其默认值是1，取值范围是1 .. 65535。
     */

    /**
     * 通过这种方式明显的优势就是依赖于数据库自身不需要其他资源，并且ID号单调自增，可以实现一些对ID有特殊要求的业务。
     * 但是缺点也很明显，首先它强依赖DB，当DB异常时整个系统不可用。虽然配置主从复制可以尽可能的增加可用性，但是数据一致性在特殊情况下难以保证。
     * 主从切换时的不一致可能会导致重复发号。还有就是ID发号性能瓶颈限制在单台MySQL的读写性能
     */
}
